In [1]:
import os
import numpy
from IPython import parallel
c = parallel.Client()
d0 = c[0]
d1 = c[1]
d = c[:]
for disp in (d0, d1, d):
disp.block = True
In [27]:
@parallel.require('numpy')
def get_norms(A, levels = [2]):
norms = []
for level in levels:
norms.append(numpy.linalg.norm(A, level))
return norms
A = numpy.random.random(1000)
get_norms(A, levels = [1, 2, 3, numpy.inf]) == \
d0.apply(get_norms, A, levels = [1, 2, 3, numpy.inf])
Out[27]:
In [5]:
@d.remote(True)
@parallel.require('os')
def getpid ():
import os
return os.getpid()
print os.getpid(), getpid()
In [151]:
def set_x (v):
global x
x = v
@d.remote(True)
def get_x (x):
return x
a, b = numpy.random.random(2)
d0.apply(set_x, a)
d1.apply(set_x, b)
print [a, b] == get_x(parallel.Reference('x')) == d.pull('x'),
a, b = numpy.random.random(2)
d0.push({'x': a})
d1.push({'x': b})
print [a, b] == get_x(parallel.Reference('x')) == d.pull('x'),
a, b = numpy.random.random(2)
d0['x'] = a
d1['x'] = b
print [a, b] == get_x(parallel.Reference('x')) == d.pull('x')